home *** CD-ROM | disk | FTP | other *** search
- #include <sys/types.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- /* Read characters from the pipe and echo them to @code{stdout}. */
-
- void
- read_from_pipe (int file)
- {
- FILE *stream;
- int c;
- stream = fdopen (file, "r");
- while ((c = fgetc (stream)) != EOF)
- putchar (c);
- fclose (stream);
- }
-
- /* Write some random text to the pipe. */
-
- void
- write_to_pipe (int file)
- {
- FILE *stream;
- stream = fdopen (file, "w");
- fprintf (stream, "hello, world!\n");
- fprintf (stream, "goodbye, world!\n");
- fclose (stream);
- }
-
- int
- main (void)
- {
- pid_t pid;
- int mypipe[2];
-
- /*@group*/
- /* Create the pipe. */
- if (pipe (mypipe))
- {
- fprintf (stderr, "Pipe failed.\n");
- return EXIT_FAILURE;
- }
- /*@end group*/
-
- /* Create the child process. */
- pid = fork ();
- if (pid == (pid_t) 0)
- {
- /* This is the child process. */
- read_from_pipe (mypipe[0]);
- return EXIT_SUCCESS;
- }
- else if (pid < (pid_t) 0)
- {
- /* The fork failed. */
- fprintf (stderr, "Fork failed.\n");
- return EXIT_FAILURE;
- }
- else
- {
- /* This is the parent process. */
- write_to_pipe (mypipe[1]);
- return EXIT_SUCCESS;
- }
- }
-